﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ElectrodomesticosAbr2014.Models
{
    public class Producto
    {
        /// <summary>
        /// Catalogo de productos que vive más allá de la instancia del Producto
        /// </summary>
        public static List<Producto> catalogo;

        public string Nombre { get; set; }
        private string categoria;
        public double Precio { get; set; }

        public Producto(string nombre, string categoria, float precio)
        {
            this.Nombre = nombre;
            this.categoria = categoria;
            this.Precio = precio;
        }

        public string Categoria
        {
            get { return categoria; }
            set { categoria = value; }
        }

        public static dynamic CatalogoOrdenado()
        {
            Producto.catalogo.Sort(new ComparadorProducto());
            return Producto.catalogo;
        }

        public static dynamic ArmarDiccionarioPorCategorias() 
        {
            Dictionary<String, List<Producto>> filtrado = 
                new Dictionary<string, List<Producto>>();

            foreach (var i in Producto.catalogo)
            {
                if (!filtrado.ContainsKey(i.Categoria))
                {
                    List<Producto> productosCategoria = new List<Producto>();
                    filtrado.Add(i.Categoria, productosCategoria);
                    productosCategoria.Add(i);
                }
                else
                {
                    filtrado[i.Categoria].Add(i);
                }
            }
            return filtrado;
        }



    }

    public class ComparadorProducto : IComparer<Producto>
    {
        public int Compare(Producto x, Producto y)
        {
            return x.Categoria.CompareTo(y.Categoria);
        }
    }

}